package com.gmgx.hrms.biz.impl;

import com.gmgx.hrms.biz.OLBiz;
import com.gmgx.hrms.dao.OLDao;
import com.gmgx.hrms.dao.impl.OLDaoImpl;
import com.gmgx.hrms.entity.OL;

import java.time.LocalDateTime;
import java.time.temporal.TemporalField;
import java.util.List;

public class OLBizImpl implements OLBiz {
 private OLDao olDao=new OLDaoImpl();
    @Override
    public boolean addOLForLeave(OL ol) {
        //先去判断用户当前的时间内且状态不等于6是否存在记录
        if (olDao.queryOLByEmpidAndTimeRangeForLeave(ol)) {
            //如果有则无法申请
            System.out.println("存在当前时间且尚未审批通过的请假申请");
            return false;
        } else {
            //如果没有则可以添加
            //开始日期和结束的日期必须同一天
            if (ol.getOl_start().toLocalDate().equals(ol.getOl_end().toLocalDate())) {
                //开始时间要早于结束时间
                if (ol.getOl_start().isBefore(ol.getOl_end())) {
                    //   //开始和结束时间要晚于系统当前时间
                    if (ol.getOl_start().isAfter(LocalDateTime.now()) && ol.getOl_end().isAfter(LocalDateTime.now())) {
                        //取出开始和结束的时间(转换成秒)
                        int seconds1 = ol.getOl_start().toLocalTime().toSecondOfDay();
                        int seconds2 = ol.getOl_end().toLocalTime().toSecondOfDay();
                        boolean f1 = (seconds1 >= 9 * 3600 && seconds1 <= 12 * 3600) || (seconds1 >= 13.5 * 3600 && seconds1 <= 17 * 3600);
                        boolean f2 = (seconds2 >= 9 * 3600 && seconds2 <= 12 * 3600) || (seconds2 >= 13.5 * 3600 && seconds2 <= 17 * 3600);
                        if (f1 && f2) {
                            return olDao.addOLForLeave(ol);
                        } else {
                            //开始时间和结束时间不在工作时间范围内？
                            System.out.println("开始时间或者结束时间不在工作时间范围内9:00-12:00 13:30-17:00");
                            return false;
                        }
                    } else {
                        System.out.println("请假开始时间和结束时间要晚于当前时间");
                        return false;
                    }


                } else {
                    System.out.println("请假开始时间要早于结束时间");
                    return false;
                }
            } else {
                System.out.println("请假只能一天一天进行");
                return false;
            }
        }

//        return false;
    }

    @Override
    public List<OL> getOLByEmpidForLeave(int empid) {
        return olDao.queryOLByEmpidForLeave(empid);
    }

    @Override
    public List<OL> getOLByDeptIdForLeave(int deptid) {
        return olDao.queryOLByDeptIdForLeave(deptid);
    }

    @Override
    public boolean editOLByOLidForLeave(int olid, String status) {
        if(status.equals("1")||status.equals("6")){
             return olDao.updateOLByOLidForLeave(olid,status);
        }else{
            System.out.println("输入的状态无效，只能是1或者6");
            return false;
        }
    }
}
